<?php
namespace app\admin\controller;

use app\admin\model\Auth;
use app\admin\model\Role as ModelRole;
use app\admin\model\User;
use app\BaseController;
use think\facade\Session;

class Role extends Base
{
    public function index()
    {
        $this->logs('[管理员]管理员角色视图');
        return view();
    }
    public function list()
    {
        $this->logs('[管理员]管理员角色列表');
        $list = ModelRole::list();
        return success($list , '获取成功' ,0);
    }
    public function add()
    {
        $this->logs('[管理员]管理员角色添加视图');
        $authList = Auth::list();
        return view('add' , ['authList' => $authList ]);
    }
    public function doAdd()
    {
        $this->logs('[管理员]管理员角色添加');
        $param = input();
        $authId = '';
        if(empty(@$param['name']) && empty(@$param['auth'])) return error('角色名称和规则必须填上或选中');
        foreach(@$param['auth'] as $k => $v){
            $authId .= $k . ',';
        }
        $authArr = explode(',',$authId);
        $auth = ModelRole::select();
        foreach($auth as $k => $v)
        {
            if(count(array_diff($authArr,explode(',',$v->auth)))  == 0)
            {
                return error('已存在角色，角色名为【' . $v->name . '】');
            }
        }
        $hasName = ModelRole::where('name' , $param['name'])->findOrEmpty()->isEmpty();
        if(!$hasName) return error('已存在角色名称，请更换另一个');
        $res = ModelRole::create(['name' => $param['name'] , 'auth' => $authId]);
        if($res) return success();
        return error();
    }
    public function update()
    {
        $this->logs('[管理员]管理员角色更新视图');
        $id = input('id');
        $data = ModelRole::find($id);
        $authList = Auth::list();
        return view('update' , ['data' => $data , 'authList' => $authList]);
    }
    public function doUpdate()
    {
        $this->logs('[管理员]管理员角色更新');
        $param = input();
        $authId = '';
        foreach(@$param['auth'] as $k => $v){
            $authId .= $k . ',';
        }
        $param['auth'] = $authId;
        $res = ModelRole::update($param);
        if($res) return success();
        return error();
    }
    public function del()
    {
        $this->logs('[管理员]管理员角色删除');
        $id = input('id');
        $auth = ModelRole::find($id)->auth;
        if($auth == 'all') return error('不可操作');
        $res = ModelRole::destroy($id);
        if($res) return success();
        return error();
    }
}
